SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE Procedure [dbo].[SP_TTLETC_ANUL_I02]  
/*-------------------------------------------------------*/  
/*---Empresa              : OFISIS S.A.                --*/  
/*---Cliente              : OFISIS                 --*/  
/*---Sistema              : Tesoreria                  --*/  
/*---M÷dulo               : Empresa                    --*/  
/*---Programa             : Anulaci¸n Letras de una Renovaci½n --*/  
/*---       CTAS POR COBRAR        --*/  
/*---Script               : TTLETC_ANUL.sql            --*/  
/*---Nombre SP            : SP_TTLETC_ANUL_I02         --*/  
/*---Desarrollado por     : Reynaldo Menacho L.      --*/  
/*---Fecha Creaci÷n       : 05/01/2004                 --*/  
/*---Base Datos           : Microsoft Sql Server       --*/  
/*---Versi÷n              : 2000                        --*/  
/*---Invoca a SP          :                            --*/  
/*-------------------------------------------------------*/  
  
/*-------------------------------------------------------*/    
/*---Modificado 1 por     : Maribel Julca Rodriguez      --*/    
/*---Fecha Modificaci©n   : 20/04/2005                   --*/     
/*---Detalle Modificaci©n : ingreso de los campos CO_USUA_CREA Y CO_USUA_MODI                           --*/    
/*-------------------------------------------------------*/    
  
/*-------------------------------------------------------*/  
/*---Comentarios                                       --*/  
/*---                                                  --*/  
/*---                                                  --*/  
/*-------------------------------------------------------*/  
  
/*-------------------------------------------------------*/  
/*---Drop Proc SP_TTLETC_ANUL_I02                      --*/  
/*---Grant all on SP_TTLETC_ANUL_I02 to public         --*/   
/*---SP_TTLETC_ANUL_I02                                --*/  
/*-------------------------------------------------------*/  
 @ISCO_EMPR       TD_VC_002,   
 @ISCO_USUA_MODI  TD_VC_008_USUA,  
 @ISNU_LETR_CLIE  TD_VC_020,  
 @ISCO_CLIE   TD_VC_020,  
 @ISCO_TIPO_OPER  TD_VC_003,  
 @IDFE_ANUL       TD_DT_001,  
 @ISNU_LETR_ANTE  TD_VC_020,  
 @ISNU_RENO   TD_VC_008,  
 @IDFE_RENO   TD_DT_001,  
 @ISNU_ASTO   TD_VC_010
	As
Declare  
    @VSCO_TIPO_INAN TD_VC_003,     
    @VSST_GEAS_ANUL TD_VC_001,  
    @VSCO_TIPO_OPE1 TD_VC_003,  
    @OSTI_DOCU_LETR TD_VC_003,  
    @VSCO_ESTA_ORIG TD_VC_003,  
    @VNIM_RENO_MDOC TD_NU_016_004,  
    @VSCO_ESTA_LETR TD_VC_003,  
    @VNNU_SECU     TD_IN_001,  
    @VSST_INTE_BACH TD_VC_001,  
    @VSTI_OPNI_CARG TD_VC_003,  
    @VSTI_OPNI_ABON TD_VC_003,  
    @VSCO_TIOP_CAJA TD_VC_003,  
    @OSNU_ULTI_CORR TD_VC_010,  
    @VSCO_UNID_CNTB TD_VC_003,  
    @VSST_ASTO_RESU TD_VC_001,  
    @VSNU_COMP_CAJA TD_VC_008,  
    @VSCO_CAJA     TD_VC_020,  
    @VSAA_CAJA     TD_VC_004,  
    @VSMM_CAJA     TD_VC_002  
  
 Select @OSNU_ULTI_CORR = NULL, @VSST_ASTO_RESU = 'N'  
  
 Begin Tran SP_TTDOCP_ANUL_D01  
      
    EXEC SP_TTDOCU_CNTB_Q01 6, @OSTI_DOCU_LETR OUTPUT  
  
  
    SELECT @VSCO_TIPO_INAN = CO_TIPO_OPER, @VSST_GEAS_ANUL = ST_GEAS_ANUL,  
 @VSST_INTE_BACH = ST_INTE_BACH, @VSTI_OPNI_CARG = CO_TIPO_OPEG, @VSTI_OPNI_ABON = CO_TIPO_OPER  
    FROM   TMPARA_TESO   
    WHERE  CO_EMPR = @ISCO_EMPR  
  
    If @VSST_GEAS_ANUL = 'N'  
       Select @VSCO_TIPO_OPE1 = @VSCO_TIPO_INAN  
    Else      
      Select @VSCO_TIPO_OPE1 = @ISCO_TIPO_OPER   
  
    /* --- Actualizo datos de la letra origen ---- */  
  
   Select @VSCO_ESTA_LETR = CO_ESTA_DOCU, @VSCO_UNID_CNTB = CO_UNID_CONC  
   From   TMLETR_CLIE  
   Where  CO_EMPR = @ISCO_EMPR  
          And NU_LETR_CLIE = @ISNU_LETR_ANTE  
  
    Select @VSCO_ESTA_ORIG = CO_ESTA_ORIG, @VNIM_RENO_MDOC = IM_RENO_MDOC  
    From   TDRENO_CLIE  
    Where  CO_EMPR = @ISCO_EMPR  
        And CO_CLIE = @ISCO_CLIE  
        And NU_RENO = @ISNU_RENO  

    And FE_RENO = @IDFE_RENO  
    And CO_TIPO_DOCU = @OSTI_DOCU_LETR  
    And NU_DOCU_CLIE = @ISNU_LETR_ANTE  
  
    Update TMLETR_CLIE   
    Set    CO_ESTA_DOCU = @VSCO_ESTA_ORIG,   
    NU_RENO = NULL,  
    IM_PAGA = IM_PAGA - ISNULL(@VNIM_RENO_MDOC,0),  
         CO_USUA_MODI = @ISCO_USUA_MODI,   
    FE_USUA_MODI = GETDATE()  
    Where  CO_EMPR = @ISCO_EMPR  
           And NU_LETR_CLIE = @ISNU_LETR_ANTE  
  
    If @@error <> 0  
       Begin  
         Rollback tran  
         Return  
       End      
  
  
    Select @VNNU_SECU = ISNULL(Max(NU_SECU),0) + 1  
    From   TDKARD_DOCU  
    Where  CO_EMPR = @ISCO_EMPR   
  
    Insert Into TDKARD_DOCU (CO_EMPR, NU_SECU,CO_TIPO_DOCU, NU_DOCU_CLIE, CO_CLIE, CO_ESTA_ACTU,  
                              CO_ESTA_DOCU, NU_CORR_MODI, CO_USUA_CREA,FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI )   
    Values ( @ISCO_EMPR, @VNNU_SECU , @OSTI_DOCU_LETR, @ISNU_LETR_ANTE, @ISCO_CLIE,  
               @VSCO_ESTA_ORIG, @VSCO_ESTA_LETR, @VNNU_SECU, @ISCO_USUA_MODI,GETDATE(), @ISCO_USUA_MODI, GETDATE() )  
  
    If @@error <> 0  
       Begin  
         Rollback tran  
         Return  
       End      
  
  
  
    /* --- Actualizo datos de la letra nueva ---- */  
  
    Update TMLETR_CLIE   
    Set    CO_ESTA_DOCU = 'ANU', CO_TIPO_OPER = @VSCO_TIPO_OPE1,
	CO_USUA_MODI = @ISCO_USUA_MODI,  
  	FE_USUA_MODI = GETDATE()  
    Where  CO_EMPR = @ISCO_EMPR  
        And NU_LETR_CLIE = @ISNU_LETR_CLIE  
  
    If @@error <> 0  
       Begin  
         Rollback tran  
         Return  
       End      
  
  
   Select @VSCO_ESTA_LETR = CO_ESTA_DOCU   
   From   TMLETR_CLIE  
   Where  CO_EMPR = @ISCO_EMPR  
          And NU_LETR_CLIE = @ISNU_LETR_CLIE  
  
  
    Select @VNNU_SECU = ISNULL(Max(NU_SECU),0) + 1  
    From   TDKARD_DOCU  
    Where  CO_EMPR = @ISCO_EMPR   
  
    Insert Into TDKARD_DOCU (CO_EMPR, NU_SECU,CO_TIPO_DOCU, NU_DOCU_CLIE, CO_CLIE, CO_ESTA_ACTU,  
                              CO_ESTA_DOCU, NU_CORR_MODI, CO_USUA_CREA,FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI )   
    Values ( @ISCO_EMPR, @VNNU_SECU , @OSTI_DOCU_LETR, @ISNU_LETR_CLIE, @ISCO_CLIE,  
               'ANU', @VSCO_ESTA_LETR,  @VNNU_SECU, @ISCO_USUA_MODI,GETDATE(), @ISCO_USUA_MODI, GETDATE() )  
  
    If @@error <> 0  
       Begin  
         Rollback tran  
         Return  
       End      
  
  
  
    /* --- Inserto registro en la tabla de anulaciones ----- */  
  
    Insert TTLETC_ANUL ( CO_EMPR, NU_LETR_CLIE, CO_CLIE,CO_TIPO_OPER, NU_ASTO,   
       FE_ANUL, ST_CONT, NU_LETR_ANTE, NU_RENO, FE_RENO, CO_USUA_CREA,FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI)  
    Values ( @ISCO_EMPR, @ISNU_LETR_CLIE,@ISCO_CLIE, @VSCO_TIPO_OPE1, @ISNU_ASTO,  
          @IDFE_ANUL, 'N', @ISNU_LETR_ANTE, @ISNU_RENO, @IDFE_RENO, @ISCO_USUA_MODI,GETDATE(), @ISCO_USUA_MODI, GETDATE() )   
  
    If @@error <> 0  
       Begin  
         Rollback tran  
         Return  
       End      
  
    Update TDRENO_CLIE   
    Set    TI_SITU = 'ANU',
	CO_USUA_MODI = @ISCO_USUA_MODI,  
    FE_USUA_MODI = GETDATE()  
    Where  CO_EMPR = @ISCO_EMPR  
    And CO_CLIE = @ISCO_CLIE  
    And NU_RENO = @ISNU_RENO  
    And FE_RENO = @IDFE_RENO  
    AnD CO_TIPO_DOCU = @OSTI_DOCU_LETR  
        And NU_DOCU_CLIE = @ISNU_LETR_ANTE  
      
    If @@error <> 0  
       Begin  
         Rollback tran  
         Return  
       End      
  
  
    Update TCMOVI_CAJA  
    Set    TI_SITU = 'ANU',  
    CO_USUA_MODI = @ISCO_USUA_MODI,  
    FE_USUA_MODI = Getdate()  
    From   TCMOVI_CAJA T1, TRRENO_CAJA T2  
    Where  T2.CO_EMPR =  @ISCO_EMPR  
 And T2.CO_CLIE = @ISCO_CLIE  
 And T2.NU_RENO = @ISNU_RENO  
 And T2.FE_RENO = @IDFE_RENO  
 And T1.CO_EMPR = T2.CO_EMPR  
 And T1.CO_CAJA = T2.CO_CAJA  
 And T1.AA_CAJA = T2.AA_CAJA  
 And T1.MM_CAJA = T2.MM_CAJA  
 And T1.TI_MOVI = 'I'  
 And T1.NU_COMP_CAJA = T2.NU_COMP_CAJA  
 And T2.CO_TIPO_DOCU = @OSTI_DOCU_LETR  
     And T2.NU_DOCU_CLIE = @ISNU_LETR_ANTE  
  
    If @@error <> 0  
       Begin  
         Rollback tran  
         Return  
       End      
    
  
    Select @VSCO_TIOP_CAJA = CO_TIOP_CAJA, @VSNU_COMP_CAJA = NU_COMP_CAJA,  
 @VSCO_CAJA = CO_CAJA, @VSAA_CAJA = AA_CAJA, @VSMM_CAJA = MM_CAJA  
    From   TRRENO_CAJA  
    Where  CO_EMPR =  @ISCO_EMPR  
 And CO_CLIE = @ISCO_CLIE  
 And NU_RENO = @ISNU_RENO  
 And FE_RENO = @IDFE_RENO  
 And CO_TIPO_DOCU = @OSTI_DOCU_LETR  
     And NU_DOCU_CLIE = @ISNU_LETR_ANTE  
  
  
  
    /*Busco el ultimo correlativo usado para insertar el nro de comprobante*/   
    If @VSST_INTE_BACH = 'N' AND @VSST_ASTO_RESU = 'N' AND   
 @VSCO_TIOP_CAJA != @VSTI_OPNI_CARG AND @VSCO_TIOP_CAJA != @VSTI_OPNI_ABON  
  
 Exec SP_TTULTI_ASTO_Q01 @ISCO_EMPR, @ISCO_USUA_MODI, @VSCO_UNID_CNTB, @VSCO_TIOP_CAJA, @IDFE_ANUL, @OSNU_ULTI_CORR OUTPUT  
  
  
    Update TRRENO_CAJA  
    Set    TI_SITU = 'ANU', NU_ASTO_ANUL = @OSNU_ULTI_CORR,  
    FE_ANUL = @IDFE_ANUL, CO_USUA_MODI = @ISCO_USUA_MODI,  
    FE_USUA_MODI = Getdate()  
    Where  CO_EMPR =  @ISCO_EMPR  
 And CO_CLIE = @ISCO_CLIE  
 And NU_RENO = @ISNU_RENO  
 And FE_RENO = @IDFE_RENO  
 And CO_TIPO_DOCU = @OSTI_DOCU_LETR  
     And NU_DOCU_CLIE = @ISNU_LETR_ANTE  
  
    If @@error <> 0  
       Begin  
         Rollback tran  
         Return  
       End      
  
  
    If Exists (Select CO_EMPR From TRRENO_CAJA  
  Where  CO_EMPR =  @ISCO_EMPR  
  And CO_CLIE = @ISCO_CLIE  
  And NU_RENO = @ISNU_RENO  
  And FE_RENO = @IDFE_RENO  
  And CO_TIPO_DOCU = @OSTI_DOCU_LETR  
      And NU_DOCU_CLIE = @ISNU_LETR_ANTE)  
      Begin  
  
     INSERT INTO TTCAJA_ANUL(CO_EMPR, CO_CAJA, AA_CAJA, MM_CAJA, TI_MOVI, NU_COMP_CAJA,   
     CO_TIPO_OPER, FE_ANUL, ST_CONT, NU_PROC, CO_USUA_CREA,FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI)  
     VALUES (@ISCO_EMPR, @VSCO_CAJA, @VSAA_CAJA, @VSMM_CAJA, 'I', @VSNU_COMP_CAJA,   
     @VSCO_TIOP_CAJA, @IDFE_ANUL, 'N', 0, @ISCO_USUA_MODI,GETDATE(), @ISCO_USUA_MODI, GETDATE())  
  
     If @@error <> 0  
           Begin  
             Rollback tran  
             Return  
           End      
  
      End  
  
  
Commit Tran  
  
/*-------------------------- Fin ------------------------------*/


GO
